import request from "@/utils/request";

/**
 * 积分管理相关接口
 * */
const api_name = '/api/points';

// 定义积分查询参数-PointsDTO
export interface PointsDTO {
    /**
     * 结束时间
     */
    endTime?: string;
    /**
     * 排序方式
     */
    isAsc?: boolean;
    /**
     * 状态
     */
    isEnable?: boolean;
    /**
     * 关键词
     */
    keyword?: string;
    /**
     * 排序字段
     */
    orderBy?: string;
    /**
     * 当前页码
     */
    pageNum: number;
    /**
     * 每页数量
     */
    pageSize: number;
    /**
     * 积分数
     */
    pointNum?: number;
    /**
     * 开始时间
     */
    startTime?: string;
}

//定义积分任务查询参数-PointTaskDTO
export interface PointTaskDTO {
    /**
     * 积分描述
     */
    description?: string;
    /**
     * 积分任务id
     */
    id?: number;
    /**
     * 状态
     */
    isEnable?: boolean;
    /**
     * 任务限制次数 0表示不限制
     */
    limitCount?: number;
    /**
     * 积分数
     */
    rewardPoint?: number;
    /**
     * 任务类型ID 表示任务是每天、每周、每月、一次性
     */
    taskTypeId?: number;
    /**
     * 积分标题
     */
    title?: string;
}
//获取积分任务记录列表-查询参数-PointTaskUserRecordQuery
export interface PointTaskUserRecordDTO {
    /**
     * 排序方式
     */
    isAsc?: boolean;
    /**
     * 关键词
     */
    keyword?: string;
    /**
     * 排序字段
     */
    orderBy?: string;
    /**
     * 当前页码
     */
    pageNum: number;
    /**
     * 每页数量
     */
    pageSize: number;
    /**
     * 积分数
     */
    pointNum?: number;
    /**
     * 积分任务记录id
     */
    taskRecordId?: string;
    [property: string]: any;
}

/**
 * 获取积分任务列表
 * @param  查询参数 PointsDTO
 */
export function getPointsList(params: PointsDTO) {
  return request('GET', `${api_name}/list`, params);
}

/**
 * 启用/禁用积分任务
 * @param id 积分任务ID
 * @param isEnable 启用/禁用状态
 */
export function togglePointsStatus(id: number, isEnable: boolean) {
  return request('PUT', `${api_name}/${id}/enable`, { isEnable });
}

/**
 * 添加积分任务
 * @param data 积分任务数据
 * @return 积分任务ID
 */
export function addPoints(data: PointTaskDTO) {
  return request('POST', `${api_name}/add`, data);
}

/**
 * 更新积分任务
 * @param id 积分任务ID
 * @param data 积分任务数据
 * @return 
 */ 
export function updatePoints(id: number, data: PointTaskDTO) {
  return request('PUT', `${api_name}/update/${id}`, data);
}

/**
 * 获取积分任务记录列表
 * @param params 积分任务记录查询参数
 */
export function getPointsRecordList(data: PointTaskUserRecordDTO) {
    return request('POST', `${api_name}/record`, data); 
}

/**
 * 获取用户积分信息
 * @return 用户积分信息
 */
export function getUserPointsInfo() {
    return request('GET', `${api_name}/record/userinfo`);
}

// 获取用户积分任务记录列表--查询参数--UserQueryDTO
export interface UserQueryDTO {
    /**
     * 当前页码
     */
    pageNum: number;
    /**
     * 每页数量
     */
    pageSize: number;
    /**
     * 用户id
     */
    userId?: number;
    [property: string]: any;
}

/**
 * 获取用户积分任务记录列表
 * @param params 积分任务记录查询参数
 */ 
export function getUserPointsRecordList(data: UserQueryDTO) {
    return request('POST', `${api_name}/record/userinfo`, data); 
}   